package com.mtiiot.fscore.inter1;

import com.mtiiot.fscore.bean.MetadataInfo;
import com.mtiiot.fscore.bean.ReportInfo;
import com.mtiiot.fscore.bean.TemplateInfo;
import com.mtiiot.fscore.utils.ReportFormatType;
import com.mtiiot.fscore.utils.TemplateExtType;

/**
 * fs服务接口版本1.1
 * 报告单服务接口类
 * Created by lcy on 16-6-1.
 */
public interface ReportService1 {
    /**
     * 上传模板
     * @param metadataInfo 元数据信息
     * @param templateAlias
     * @param templateExtType
     * @param templateComment
     * @param file
     * @return
     */
    public String uploadTemplate(MetadataInfo metadataInfo, String templateAlias, TemplateExtType templateExtType, String templateComment, byte[] file);
    /**
     * 根据模板id下载模板
     * @param metadataInfo 元数据信息
     * @param id 模板id
     * @return
     */
    public TemplateInfo downLoadTemplateById(MetadataInfo metadataInfo, String id);

    /**
     * 根据id删除模板,
     * @param metadataInfo 元数据信息
     * @param id
     * @return if true success;if false failure
     */
    public boolean delTemplateById(MetadataInfo metadataInfo, String id);

    /**
     * 创建报告单 并返回报告单id
     * @param metadataInfo 元数据信息
     * @param templateId 模板id
     * @param dataSourceBean 数据源bean  根据不同的模板id对应不同的bean
     * @param reportFormatType 报告单输出格式类型
     * @return
     */
    public String createReportAndReturnId(MetadataInfo metadataInfo, String templateId, Object dataSourceBean, ReportFormatType reportFormatType);
    /**
     * 创建报告单
     * @param metadataInfo 元数据信息
     * @param templateId 模板id
     * @param dataSourceBean 数据源bean  根据不同的模板id对应不同的bean
     * @param reportFormatType 报告单输出格式类型
     * @return
     */
    public ReportInfo createReport(MetadataInfo metadataInfo, String templateId, Object dataSourceBean, ReportFormatType reportFormatType);

    /**
     * 根据报告单id下载报告单
     * @param metadataInfo 元数据信息
     * @param id 报告单id
     * @return
     */
    public ReportInfo downLoadReportById(MetadataInfo metadataInfo, String id);
}
